/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import dao.EstudianteJpaController;
import dao.ProgramaJpaController;
import dao.exceptions.NonexistentEntityException;
import dao.exceptions.PreexistingEntityException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import logica.Estudiante;
import logica.Programa;

/**
 *
 * @author andrescsr
 */
public class EstudianteController {
    private EntityManagerFactory factory;
    private ConnectionFactory connection;
    private EstudianteJpaController daoEstudiante;
    private ProgramaJpaController daoPrograma;

    public EstudianteController() {
        ConnectionFactory connection = new ConnectionFactory();
        factory= connection.getFactory();
        daoEstudiante = new EstudianteJpaController(factory);
        daoPrograma= new ProgramaJpaController(factory);
    }
    
    public int guardar(String codigo, String codigoP, String nombre, String sexo){
        Estudiante e = new Estudiante();
        Programa p = new Programa();
        
        p.setCodigo(codigoP);
        
        e.setCodigo(codigo);
        e.setCodigoPrograma(p);
        e.setNombre(nombre);
        e.setSexo(sexo);
        
        try {
            daoEstudiante.create(e);
            return -1;
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(EstudianteController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(EstudianteController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return 0;
    }
    
    public int borrar(String codigo){
        try {
            daoEstudiante.destroy(codigo);
            return -1;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(EstudianteController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return 0;
    }
    
    public void modificar(String codigo, String codigoP, String nombre, String sexo){
        Estudiante e = new Estudiante();
        Programa p = daoPrograma.findPrograma(codigoP);
        
        //p.setCodigo(codigoP);
        
        e.setCodigo(codigo);
        e.setCodigoPrograma(p);
        e.setNombre(nombre);
        e.setSexo(sexo);
        try {
            daoEstudiante.edit(e);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(EstudianteController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(EstudianteController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public Estudiante consultar(String codigo){
        Estudiante e = daoEstudiante.findEstudiante(codigo);
        return e;
    }
    
    public List<Estudiante> consultasTodos(){
        return daoEstudiante.findEstudianteEntities();
    }
}
